package com.forum.service;

import com.forum.dto.LoginDTO;
import com.forum.dto.UserDTO;

public interface UserService {
    UserDTO getUserById(Long id);
    void register(UserDTO userDTO);
    UserDTO login(LoginDTO loginDTO);
    void updateUser(UserDTO userDTO);
    void deleteUser(Long id);
    boolean checkUsernameAvailable(String username);
    
    /**
     * 验证用户凭据
     *
     * @param username 用户名
     * @param password 密码
     * @return 用户ID，认证失败返回null
     */
    Long validateCredentials(String username, String password);
    
    /**
     * 根据用户名获取用户ID
     *
     * @param username 用户名
     * @return 用户ID
     */
    Long getUserIdByUsername(String username);
    
    /**
     * 获取用户详情（包含角色信息）
     *
     * @param userId 用户ID
     * @return 包含角色信息的用户详情
     */
    UserDTO getUserDetailsWithRoles(Long userId);
}